import { defineStore } from "pinia";
import { getToken, setToken, removeToken } from "@/utils/token-utils";
import { getLogin, getUserInfo } from "@/api/index";

/* 
用户信息的存储
*/
export const useUserInfoStore = defineStore(
    'userInfo',
    {
        state: ()=> ({
            token: getToken(),
            nickName: '',
            uid: ''
        }),
        persist: true, //开启持久化（默认使用 localStorage）
        actions: {
            /* 
            登录，获取服务端提供的token，存在到本地 
            */
            async login (loginForm) {
                //发送登录请求
                const result = await getLogin(loginForm)
                //取出token
                const token = result.token
                //存入前端数据文件
                setToken(token)
                //把token赋值给pinia
                this.token = token
            },
            /* 
             通过token，查询相应的用户信息，并赋值给state的属性值
            */
            async getInfo(){
                const result = await getUserInfo()
                this.nickName = result.loginUser.nickName
                this.uid = result.loginUser.uid
            },
            /* 
             初始化用户信息，删除token，重置state的属性值
            */
            initUserInfo(){
                removeToken()
                this.nickName = ''
                this.id = ''
                this.token = ''
            } 
        }
    }
)